package com.dd.cloud.user.service.news;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dd.cloud.common.vo.PageReq;
import com.dd.cloud.user.entity.news.NewsInfo;
import com.dd.cloud.user.entity.order.OrderPay;
import com.dd.cloud.user.res.news.NewsInfoPageRes;

import java.time.LocalDate;

/**
 * @author Lx
 * @version 1.0
 */
public interface INewsInfoService extends IService<NewsInfo> {
    /**
     * 查询消息列表 分页
     *
     * @param req
     * @param status
     * @return
     */
    IPage<NewsInfoPageRes> queryNewsInfoPage(PageReq req, Integer status);

    /**
     * 发送订单支付通知
     *
     * @param op
     */
    void sendOrderPayNotice(OrderPay op);

    /**
     * 发送医生提现打款成功通知
     *
     * @param doctorId
     * @param amount
     * @param reason
     * @param type     类型 1成功 2失败
     */
    void sendDoctorWithdrawPaymentNotice(Integer doctorId, Integer amount, String reason, Integer type);

    /**
     * 发送申请签约医生签审核结果通知
     *
     * @param doctorId
     * @param type     1审核成功 2审核失败
     */
    void sendApplyDoctorBindReviewNotice(Integer doctorId, Integer type);

    /**
     * 发送申请签约医生审核待处理
     *
     * @param doctorId
     */
    void sendApplyDoctorBindHandleNotice(Integer doctorId);

    /**
     * 发送申请医生提交的处方审核结果通知
     *
     * @param doctorId
     * @param tencode
     * @param type     类型 1审核成功 2审核失败
     */
    void sendApplyDoctorPresReviewNotice(Integer doctorId, String tencode, Integer type);

    /**
     * 发送审核医生处方审核待处理通知
     *
     * @param doctorId
     * @param tencode
     */
    void sendReviewDoctorPresHandleNotice(Integer doctorId, String tencode);

    /**
     * 发送资料待完善消息给医生
     *
     * @param doctorId
     */
    void sendDoctorAuthLapseNewsNoticeAuthType1(Integer doctorId);

    /**
     * 发送乡村医生资质过期消息给医生
     *
     * @param doctorId
     * @param date
     */
    void sendDoctorAuthLapseNewsNoticeAuthType2(Integer doctorId, LocalDate date);

    /**
     * 发送互联网执业医生备案审核消息
     *
     * @param doctorId
     * @param applyId
     * @param type     1审核成功 2审核失败
     */
    void sendDoctorHlwFilingNoticeReviewNotice(Integer doctorId, Integer applyId, Integer type);

    /**
     * 发送预约成功消息
     *
     * @param orderNo
     */
    void sendConsultSuccessMessage(String orderNo);

    /**
     * 发送就诊提醒
     *
     * @param id
     */
    void sendTreatMessage(Integer id);

    /**
     * 发送问诊待缴费提醒
     *
     * @param orderNo
     * @param time
     */
    void sendOrderNotPayMessage(String orderNo, String time);

    /**
     * 发送处方待缴费消息
     *
     * @param time
     * @param orderNo
     */
    void sendPresOrderNotPayMessage(String orderNo, String time);

    /**
     * 发送评价消息
     *
     * @param consultId
     */
    void sendEvaluateMessage(String consultId);

    /**
     * 发送支付成功提醒
     *
     * @param orderNo
     */
    void sendPreSuccessBuyMessage(String orderNo);

    /**
     * 退款消息
     *
     * @param orderNo
     */
    void sendPresRefundMessage(String orderNo);

    /**
     * 问诊退款系统消息
     *
     * @param orderNo
     */
    void sendConsultRefundOrder(String orderNo);

    /**
     * 发送系统消息给医生处方订单发货
     *
     * @param tencode
     * @param docId
     * @param pName
     * @param expressNo
     */
    void sendDeliveryPres(String tencode, Integer docId, String pName, String expressNo);
}
